package com.wgf.controller;

import com.alibaba.dashscope.aigc.imagesynthesis.ImageSynthesis;
import com.alibaba.dashscope.aigc.imagesynthesis.ImageSynthesisParam;
import com.alibaba.dashscope.aigc.imagesynthesis.ImageSynthesisResult;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.utils.JsonUtils;
import dev.langchain4j.data.message.ImageContent;
import dev.langchain4j.data.message.TextContent;
import dev.langchain4j.data.message.UserMessage;
import dev.langchain4j.model.chat.ChatModel;
import dev.langchain4j.model.chat.response.ChatResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.Resource;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.io.IOException;
import java.util.Base64;

@RestController
public class ImageModelController {

    @Autowired
    private ChatModel chatModel;

    //从类路径（classpath）下的static/images/目录中加载名为“悟空.png”的资源文件，并注入到Resource对象中。
    @Value("classpath:static/images/悟空.png")
    private Resource resource;

    @GetMapping(value = "/image/call")
    public String readImage() throws IOException {
        byte[] byteArray = resource.getContentAsByteArray();//将注入的图片资源读取为字节数组
        String base64Data = Base64.getEncoder().encodeToString(byteArray);//将字节数组进行Base64编码，得到Base64字符串。

//  创建一个UserMessage对象，该对象包含两部分内容：
//        - 一个文本内容："他是谁"
//        - 一个图片内容：使用Base64字符串和MIME类型"image/png"构建的ImageContent对象。
        UserMessage userMessage = UserMessage.from(TextContent.from("他是谁"), ImageContent.from(base64Data, "image/png"));

        ChatResponse chatResponse = chatModel.chat(userMessage);//使用chatModel发送用户消息（包含文本和图片）到AI模型，并接收响应（ChatResponse对象）。
        String result = chatResponse.aiMessage().text();//从响应中提取AI消息的文本内容

        System.out.println(result);
        return result;
    }





}
